import Ajax from '@/utils/fetch'
import until from '@/utils/until'
import Qs from 'qs'

const apiPath = until.apiPath + 'fdn-authorize/'

const authApi = {
  /**
   * 统一认证预登录
   */
  authPreLogin(params, opts) {
    const data = params
    return Ajax({
      url: `${apiPath}admin/sessions/prelogin`,
      method: 'post',
      opts,
      data
    })
  },
  /**
   * 后台登录
   * @param {String} userName 账号
   * @param {String} password 密码 md5 加密
   * @param {String} opts 配置请求参数
   */
  login(params, opts) {
    const data = params
    return Ajax({
      url: `${apiPath}login`,
      method: 'post',
      opts,
      data
    })
  },
  /**
   * 获取jsapi签名
   */
  authGetJsApi(params) {
    const query = Qs.stringify(params)
    return Ajax({
      url: `${apiPath}jsapi/signature?${query}`,
      method: 'GET'
    })
  },

  /**
   * 通过云办公获取jsapi访问授权的签名信息，主要处理开放域相关事宜，请求该接口需要token鉴权
   */
  authOpenGetJsApi(params) {
    const query = Qs.stringify(params)
    return Ajax({
      url: `${apiPath}jsapi/signature/authorize?${query}`,
      method: 'GET'
    })
  },
  /**
     * 外部表单获取jsapi签名
     */
  externalAuthGetJsApi(params) {
    const query = Qs.stringify(params)
    return Ajax({
      url: `${until.apiPath}bpms-externalform/mutual/jsapi/signature?${query}`,
      method: 'GET'
    })
  },
  /**
   * token 验证
   * @param {string} token
   */
  verificationToken(token) {
    return Ajax({
      url: `${apiPath}admin/sessions/token?token=${token}`,
      method: 'GET'
    })
  },
  /**
   * 获取本地化配置数据
   */
  getLocale() {
    return Ajax({
      url: `${until.apiPath}bpms-workbench/i18n/locales/locale`,
      method: 'GET'
    })
  },
  /**
   * 设置本地化配置数据
   */
  setLocale(locale) {
    return Ajax({
      url: `${until.apiPath}bpms-workbench/i18n/locales/${locale}`,
      method: 'PUT'
    })
  },
  /**
   * 获取license
   */
  getLicenseData() {
    return Ajax({
      url: `${until.apiPath}bpms-workbench/license`,
      method: 'GET'
    })
  },

  /**
   * [getSSOToken 获取token]
   */
  getSSOToken() {
    return Ajax({
      url: `${until.apiPath}authorize/admin/sessions/ssoFromWbgManager`,
      method: 'GET'
    })
  },
  /**
   * [getVersion 获取当前版本]
   */
  getVersion() {
    return Ajax({
      url: `${until.apiPath}bpms-workbench/version`,
      method: 'GET'
    })
  },
  rioLoginOut() {
    return Ajax({
      url: `${apiPath}qiqiao/sessions/rio`,
      method: 'DELETE'
    })
  },
  /**
   * [loginCallback 登录回调接口]
   *  authCode 统一认证返回授权码
   *  sessionId 统一认证返回sessionId
   *  loginType 登录平台类型【开发平台：CONSOLE，pc运行平台：RUNTIME，移动端运行平台：M_RUNTIME，运营平台：OPERATION】
   *  domain cookies设置域名
   *  path cookies设置路径
   */
  loginCallBack(params) {
    const data = Qs.stringify(params)
    return Ajax({
      url: `${apiPath}qiqiao/sessions/callback?${data}`,
      method: 'GET',
      data
    })
  },
  /**
   * [getAuthUrl 获取统一认证url]
   * accountType  登录平台类型【开发平台：ADMIN，pc运行平台：USER，移动端运行平台：MOBILE_USER，运营平台：OPERATION_ADMIN】
   * callbackUrl 认证成功后的回调地址
   * corpId 企业id(移动端登录需要用到)
   */
  getAuthUrl(params) {
    const data = Qs.stringify(params)
    return Ajax({
      url: `${apiPath}qiqiao/sessions/auth/url?${data}`,
      method: 'GET'
    })
  },
  /**
   * [getAuthUrlByAccount 获取统一认证身份转换url]
   * accountType  登录平台类型【开发平台：ADMIN，pc运行平台：USER，移动端运行平台：MOBILE_USER，运营平台：OPERATION_ADMIN】
   * callbackUrl 认证成功后的回调地址
   * corpId 企业id(移动端登录需要用到)
   */
  getAuthUrlByAccount(params) {
    const data = Qs.stringify(params)
    return Ajax({
      url: `${apiPath}qiqiao/sessions/to_account/auth/url?${data}`,
      method: 'GET'
    })
  },
  /**
   * [validate 校验token是否有效]
   */
  validateAuth(opts) {
    return Ajax({
      url: `${apiPath}qiqiao/sessions/validate`,
      method: 'GET',
      opts
    })
  },
  // ***code-merge-1.0***
  /**
   * 获取登录用户信息
   */
  getSessionData() {
    // 由于很多页面调用该方法，故设置固定账户类型，为开发平台
    return Ajax({
      url: `${apiPath}qiqiao/sessions/info?accountType=ADMIN`,
      method: 'get'
    })
  },
  /**
   * [getApplicationVisible 检测当前用户是否有在应用发布权限内]
   * @param  {[String]} applicationId [应用id]
   */
  getApplicationVisible(applicationId) {
    return Ajax({
      url: `${until.apiPath}bpms-workbench/applications/${applicationId}/visible`,
      method: 'GET'
    })
  },
  /**
   * 统一认证注销登录
   */
  authLogout(data) {
    const query = Qs.stringify(data)
    return Ajax({
      url: `${apiPath}qiqiao/sessions/logout?${query}`,
      method: 'post'
    })
  },
  // 获取各平台运行地址
  getRuntimeUrl() {
    return Ajax({
      url: `${until.apiPath}bpms-workbench/uri`,
      method: 'get'
    })
  },
  // 获取运行环境配置
  getEnvironmentConfig() {
    return Ajax({
      url: `${until.apiPath}bpms-workbench/env/config`,
      method: 'get'
    })
  },
  // 获取腾讯位置服务key，在表单设计页面判断
  getTencentMapKey() {
    return Ajax({
      url: `${until.apiPath}bpms-workbench/function/config/location`,
      method: 'get'
    })
  }
}

export default authApi
